﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using System.Web.Security;
using System.Security.Principal;

namespace OA
{
    // 注意: 有关启用 IIS6 或 IIS7 经典模式的说明，
    // 请访问 http://go.microsoft.com/?LinkId=9394801

    public class MvcApplication : System.Web.HttpApplication
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            string path = "GoodsFiow_HouTai";
            routes.MapRoute(
                "Default", // 路由名称
                "{controller}/{action}", // 带有参数的 URL
                new { controller = "MemberInfo", action = "MemberInfo", id = UrlParameter.Optional } // 参数默认值
            );
          
        }
        public static string LoginID = "";
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            Application["UserName"] = "";
            RegisterRoutes(RouteTable.Routes);
        }
        void Application_End(object sender, EventArgs e)
        {
            // 在应用程序关闭时运行的代码

        }

        void Application_Error(object sender, EventArgs e)
        {
            // 在出现未处理的错误时运行的代码
        }
        void Session_Start(object sender, EventArgs e)
        {
 
        }
        void Session_End(object sender, EventArgs e)
        {
            // 在会话结束时运行的代码。 
            // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
            // InProc 时，才会引发 Session_End 事件。如果会话模式设置为 StateServer 
            // 或 SQLServer，则不会引发该事件。
            //Session.Abandon();
            Application.Lock();
            //Application["UserName"] = (int)Application["UserName"] - 1;
            string sss= Application["UserName"].ToString();
            string [] shuzu= sss.Split(',');
            for (int i = 0; i < shuzu.Count()-1; i++)
            {
                if (shuzu[i].ToString() == LoginID)
                {
                    string con=Application["UserName"].ToString();
                    string oop = con.Remove(con.IndexOf(LoginID), LoginID.Count() + 1);
                   Application["UserName"]= con.Remove(con.IndexOf(LoginID), LoginID.Count() + 1);
                    break;
                }
            }
            Application.Lock();
        }

        protected void Application_AuthenticateRequest(Object sender, EventArgs e)
        {
            if (HttpContext.Current.User != null)
            {
                if (HttpContext.Current.User.Identity.IsAuthenticated)
                {
                    FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity;
                    FormsAuthenticationTicket ticket = id.Ticket;
                    string userData = ticket.UserData;
                    string[] roles = userData.Split(',');
                    HttpContext.Current.User = new GenericPrincipal(id, roles);

                }
            }
        }
       
    }
}